description = "Spring Web"

apply plugin: "kotlin"
apply plugin: "kotlinx-serialization"

dependencies {
	api(project(":spring-beans"))
	api(project(":spring-core"))
	api("io.micrometer:micrometer-observation")
	compileOnly("io.projectreactor.tools:blockhound")
	optional(project(":spring-aop"))
	optional(project(":spring-context"))
	optional(project(":spring-oxm"))
	optional("com.fasterxml.jackson.core:jackson-databind")
	optional("com.fasterxml.jackson.dataformat:jackson-dataformat-cbor")
	optional("com.fasterxml.jackson.dataformat:jackson-dataformat-smile")
	optional("com.fasterxml.jackson.dataformat:jackson-dataformat-xml")
	optional("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")
	optional("com.fasterxml.woodstox:woodstox-core")
	optional("com.google.code.gson:gson")
	optional("com.google.protobuf:protobuf-java-util")
	optional("com.rometools:rome")
	optional("com.squareup.okhttp3:okhttp")
	optional("io.micrometer:context-propagation")
	optional("io.netty:netty-buffer")
	optional("io.netty:netty-handler")
	optional("io.netty:netty-codec-http")
	optional("io.netty:netty-transport")
	optional("io.netty:netty5-buffer")
	optional("io.netty:netty5-handler")
	optional("io.netty:netty5-codec-http")
	optional("io.netty:netty5-transport")
	optional("io.projectreactor.netty:reactor-netty-http")
	optional("io.projectreactor.netty:reactor-netty5-http")
	optional("io.reactivex.rxjava3:rxjava")
	optional("io.undertow:undertow-core")
	optional("jakarta.el:jakarta.el-api")
	optional("jakarta.faces:jakarta.faces-api")
	optional("jakarta.json.bind:jakarta.json.bind-api")
	optional("jakarta.servlet:jakarta.servlet-api")
	optional("jakarta.servlet.jsp:jakarta.servlet.jsp-api")
	optional("jakarta.validation:jakarta.validation-api")
	optional("jakarta.xml.bind:jakarta.xml.bind-api")
	optional("org.apache.groovy:groovy")
	optional("org.apache.httpcomponents.client5:httpclient5")
	optional("org.apache.httpcomponents.core5:httpcore5-reactive")
	optional("org.apache.tomcat.embed:tomcat-embed-core")
	optional("org.eclipse.jetty:jetty-reactive-httpclient")
	optional("org.eclipse.jetty:jetty-server") {
		exclude group: "jakarta.servlet", module: "jakarta.servlet-api"
	}
	optional("org.eclipse.jetty.ee10:jetty-ee10-servlet") {
		exclude group: "jakarta.servlet", module: "jakarta.servlet-api"
		exclude group: "org.eclipse.jetty", module: "jetty-ee"
		exclude group: "org.eclipse.jetty", module: "jetty-security"
		exclude group: "org.eclipse.jetty", module: "jetty-server"
		exclude group: "org.eclipse.jetty", module: "jetty-servlet"
	}
	optional("org.jetbrains.kotlin:kotlin-reflect")
	optional("org.jetbrains.kotlin:kotlin-stdlib")
	optional("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
	optional("org.jetbrains.kotlinx:kotlinx-serialization-cbor")
	optional("org.jetbrains.kotlinx:kotlinx-serialization-json")
	optional("org.jetbrains.kotlinx:kotlinx-serialization-protobuf")
	optional("com.fasterxml:aalto-xml")  // out of order to avoid XML parser override
	testFixturesApi("jakarta.servlet:jakarta.servlet-api")
	testFixturesApi("org.junit.jupiter:junit-jupiter-api")
	testFixturesApi("org.junit.jupiter:junit-jupiter-params")
	testFixturesImplementation("io.projectreactor:reactor-test")
	testFixturesImplementation("org.assertj:assertj-core")
	testFixturesImplementation("org.bouncycastle:bcpkix-jdk18on") {
		because("needed by Netty's SelfSignedCertificate on JDK 15+")
	}
	testFixturesImplementation("org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server")
	testImplementation(project(":spring-core-test"))
	testImplementation(testFixtures(project(":spring-beans")))
	testImplementation(testFixtures(project(":spring-context")))
	testImplementation(testFixtures(project(":spring-core")))
	testImplementation("com.fasterxml.jackson.datatype:jackson-datatype-jdk8")
	testImplementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
	testImplementation("com.fasterxml.jackson.module:jackson-module-kotlin")
	testImplementation("com.fasterxml.jackson.module:jackson-module-parameter-names")
	testImplementation("com.fasterxml.jackson.dataformat:jackson-dataformat-csv")
	testImplementation("com.squareup.okhttp3:mockwebserver")
	testImplementation("io.micrometer:micrometer-observation-test")
	testImplementation("io.projectreactor:reactor-test")
	testImplementation("io.projectreactor.tools:blockhound")
	testImplementation("org.apache.tomcat:tomcat-util")
	testImplementation("org.apache.tomcat.embed:tomcat-embed-core")
	testImplementation("org.eclipse.jetty:jetty-server")
	testImplementation("org.eclipse.jetty.ee10:jetty-ee10-servlet")
	testImplementation("org.jetbrains.kotlin:kotlin-reflect")
	testImplementation("org.skyscreamer:jsonassert")
	testImplementation("org.xmlunit:xmlunit-assertj")
	testImplementation("org.xmlunit:xmlunit-matchers")
	testRuntimeOnly("com.sun.mail:jakarta.mail")
	testRuntimeOnly("com.sun.xml.bind:jaxb-core")
	testRuntimeOnly("com.sun.xml.bind:jaxb-impl")
	testRuntimeOnly("jakarta.json:jakarta.json-api")
	testRuntimeOnly("org.eclipse:yasson")
	testRuntimeOnly("org.glassfish:jakarta.el")
	testRuntimeOnly("org.hibernate:hibernate-validator")
}
